package com.ptv.database;

import android.content.ContentValues;
import android.content.Context;
import android.database.Cursor;
import android.database.SQLException;
import android.database.sqlite.SQLiteDatabase;

public class MateriasBDAdapter {

	private Context contexto;
	private SQLiteDatabase basedatos;
	private BDHelper bdHelper;
	public static final String CAMPO_ID = "_id";
	public static final String CAMPO_NOMBRE = "nombre";
	private static final String TABLA_BD = "materias";
	
	public MateriasBDAdapter(Context context) {
		this.contexto = context;
	}
	
	public SQLiteDatabase getBD() {
		return basedatos;
	}
	
	public MateriasBDAdapter abrir() throws SQLException {
		bdHelper = new BDHelper(contexto);
		basedatos = bdHelper.getWritableDatabase();
		return this;
	}	
	
	public void cerrar() {
		bdHelper.close();
	}	
	
	public long crearMateria(String nombre) {
		ContentValues initialValues = crearContentValues(nombre);
		return basedatos.insert(TABLA_BD, null, initialValues);
	}	
	
	public int contarMaterias(){
		Cursor mCount= basedatos.rawQuery("select count(*) from materias", null);
		mCount.moveToFirst();
		int count= mCount.getInt(0);
		mCount.close();		
		return count;		
	}
	
	public boolean actualizarMateria(long id,String nombre) {
		ContentValues updateValues = crearContentValues(nombre);
		return basedatos.update(TABLA_BD, updateValues, CAMPO_ID + "=" + id, null) > 0;
	}	
	
	public boolean borraTodasLasMaterias() {
		return basedatos.delete(TABLA_BD, null , null) > 0;
	}
	
	public boolean borraMateria(long id) {
		return basedatos.delete(TABLA_BD, CAMPO_ID + "=" + id, null) > 0;
	}	
	
	public Cursor obtenerMaterias() {
		return basedatos.query(TABLA_BD, new String[] { CAMPO_ID, CAMPO_NOMBRE},null, null, null, null, null);
	}
	
	public Cursor obteneMateriasBackup() {
		return basedatos.query(TABLA_BD, null, null, null, null, null, null);
	}	
	
	public Cursor getMateria(long id) throws SQLException {
		Cursor mCursor = basedatos.query(true, TABLA_BD, new String[] {
				CAMPO_ID, CAMPO_NOMBRE},
				CAMPO_ID + "=" + id, null, null, null, null, null);
		if (mCursor != null) {
			mCursor.moveToFirst();
		}
		return mCursor;
	}		
	
	private ContentValues crearContentValues(String nombre) {
		ContentValues values = new ContentValues();
		values.put(CAMPO_NOMBRE, nombre);
		return values;
	}		
	
}
